package top.shiyiri.collection;

import org.junit.Test;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Date;

/**
 * @author Aunean
 * @date 2022/1/4
 */
/*
一、集合框架的概述
1.集合、数组都是多个数据进行存储操作的结构，简称 Java 容器
  说明：此时的存储，主要指的时内存层面的存储，不涉及到持久化的存储

2.1 数组在存储多个数据方面的特点：
    > 一旦初始化以后，其长度就确定
    > 数据一旦定义好，其元素的类型也就确定了，我们也就只能操作指定数据类型。比如：String[] arr; int[] arr1;
2.2 数组在存储多个数据方面的缺点：
    > 一旦初始化以后，其长度就不可修改
    > 数组中提供的方法非常有限，对于添加、删除、插入数据等操作，非常不便，同时效率不高
    > 获取数据中实际元素的个数的需求，数组没有现成的属性或方法可用
    > 数组存储数据的特点：有序、可重复。对于无序、不可重复的需求，不能满足

二、集合框架
    |---Collection接口：单列集合，用来存储一个一个的对象
        |---List接口：存储有序的、可重复的数据    ---> 动态数组
            |---ArrayList、LinkedList、Vector
        |---Set接口：存储无序的，不可重复的数据
            |---HashSet、LinkedHashSet、TreeSet

    |---Map接口：双列集合，用来存储一对（key-value）一对的数据
        |---HashMap、LinkedHashMap、TreeMap、Hashtable、Properties

 */
public class CollectionTest {

    @Test
    public void test1() {
        Collection list = new ArrayList();

        //add(Object e)：将元素 e 添加到集合中
        list.add("AA");
        list.add("BB");
        list.add(123);//自动装箱
        list.add(new Date());

        //size()：获取集合中元素的个数
        System.out.println(list.size());

        //addAll(Collection col)：将 col 集合中的元素添加到当前的集合中
        Collection list2 = new ArrayList();
        list2.add("BBB");
        list2.add("EEE");
        list.addAll(list2);

        System.out.println(list);

        //clear()：清空集合元素
        list2.clear();

        //isEmpty()：判断当前集合是否为空
        System.out.println(list2.isEmpty());
    }

}
